/**
 * 封装 axios 请求模块
 */
import axios from 'axios'
// 导入vuex模块
import store from '../store/index.js'
// 导入解决后端返回大数字的问题的包
import JsonBigNumber from 'json-bigint'
// 这种配置全局基础路径的方法  和之前vue基础中学习到的配置全局设置  等价
const request = axios.create({
  // baseURL: 'http://ttapi.research.itcast.cn/' // 基础路径
  baseURL: 'http://toutiao-app.itheima.net',
  // transformResponse 允许自定义原始的响应数据（字符串）
  transformResponse: [function (data) {
    try {
      // 如果转换成功则返回转换的数据结果
      return JsonBigNumber.parse(data)
    } catch (err) {
      // 其他数据的话，直接原样返回
      return data
    }
  }]
})

request.interceptors.request.use(function (config) {
  // config ：本次请求的配置对象
  // config 里面有一个属性：headers
  // 在请求拦截器中加入如下代码，通过程序的方式自动的把url前面的'/app'去掉
  if (config.url.startsWith('/app')) {
    config.url = config.url.slice(4)
  }
  const { token } = store.state
  // 下面的这个条件判断是否登录
  if (token && token.token) {
    config.headers.Authorization = `Bearer ${token.token}`
  }
  return config
}, function (error) {
  // Do something with request error
  return Promise.reject(error)
})
export default request
